package com.amumu.drama.common.modules.sumapay.dto.req;

import cn.hutool.core.date.DateUtil;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

/**
 * @author sunzhuang
 * @date 2024/6/6 10:33
 * @slogan 天下风云出我辈, 一入代码岁月催
 * @desc 微信H5支付请求参数实体类
 */
@Getter
@Setter
public class WechatPayReq {

    /**
     * 交易代码：创建订单接口
     */
    private String requestType = "IOZ1004";

    /**
     * 请求流水编号，不能重复
     */
    private String requestId;

    /**
     * 发起时间，格式为yyyyMMddHHmmss
     */
    private String requestStartTime = DateUtil.format(LocalDateTime.now(), "yyyyMMddHHmmss");

    /**
     * 商户编号
     */
    private String merchantCode;

    /**
     * 业务类型，如：在线订购：BIZ00800
     */
    private String totalBizType;

    /**
     * 交易总价格，单位元，精确到分
     */
    private String totalPrice;

    /**
     * 商品描述信息
     */
    private String goodsDesc;

    /**
     * 环境标识：0：微信小程序，3：H5
     */
    private String envFlag;

    /**
     * 重新支付有效期，单位天，0不允许重新支付
     */
    private String rePayTimeOut;

    /**
     * 异步通知地址
     */
    private String noticeUrl;

    /**
     * 同步跳转地址
     */
    private String backUrl;

    /**
     * 透传信息，不能包含 "&"、"="特殊字符
     */
    private String passThrough;

    /**
     * 终端IP
     */
    private String terminalIp;

    /**
     * 数字签名
     */
    private String signature;

    // 产品参数列表，这里简化处理，实际应用中可能需要设计为List<Map<String, String>>以支持多产品
    private String productId; // 产品编码
    private String productName; // 产品名称
    private String fund; // 产品定价
    private String merAcct; // 供应商编码
    private String bizType; // 产品业务类型
    /**
     * 产品订购数量
     */
    private String productNumber;

    // 注意：实际开发中，产品参数部分可能需要设计为复杂的嵌套结构来适应多个产品同时支付的需求。
}
